ブロックパブリックアクセス(BPA)でインターネットアクセスを遮断してみた
2024年11月19日、Amazon Virtual Private Cloud (VPC)の新機能としてリリースされた、
Block Public Access (BPA)を試す機会がありましたので、紹介します。
VPCダッシュボード
VPCダッシュボード、左メニュー最下段の「設定」から、BPA設定を実施する事が可能です。
ブロックの有効化
デフォルトのパブリックアクセスをブロックはオフ。
今回、インターネットゲートウェイのブロック方向 は「Ingress-only」とした設定を試みました。
- VPC内部からインターネットへの通信は許可
- インターネットからVPC内への通信は禁止
数分経過後ステータスが「オン」となり、パブリックアクセスブロックが有効になりました。
動作確認
動作確認用に httpd をインストールした EC2インスタンスを事前に用意しました。
sudo dnf install httpd -y
sudo systemctl start httpd
セキュリティグループは HTTP を /0 で全開放。
BPAの実施前に、パブリックIPを利用した通信ができる事を確認しました。
$ curl 15.168.xx.xx
<html><body><h1>It works!</h1></body></html>
$ nc -zv 15.168.xx.xx 80
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Connected to 15.168.xx.xx:80.
Ncat: 0 bytes sent, 0 bytes received in 0.04 seconds.
BPAの実施後はタイムアウトとなり、通信出来ない状態となりました。
$ curl 15.168.xx.xx -m 5
curl: (28) Connection timed out after 5002 milliseconds
$ nc -zv 15.168.xx.xx 80
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: TIMEOUT.
除外設定
検証用のEC2が稼働するAZを対象に、双方向のインターネットアクセスを許可する設定を追加しました。
BPAの除外設定により、通信可能になりました。
$ curl 15.168.xx.xx -m 5
<html><body><h1>It works!</h1></body></html>
$ nc -zv 15.168.xx.xx 80
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Connected to 15.168.xx.xx:80.
Ncat: 0 bytes sent, 0 bytes received in 0.04 seconds.
まとめ
セキュリティグループやNACLの設定、管理が出来ている環境であれば、BPAは必須ではありません。
DX接続やVPN接続などの閉塞網を利用、機密情報の保護のためインターネットアクセスできる状態がリスクとなるワークロードで、人為的なミスや設定の漏れのリスクを最小化するためのに対策が求められる場合、BPAの採用をご検討ください。
尚、AWSサービスや、外部のSaaS、PaaSのエンドポイントを IGW、NATGateway経由で利用していた場合、BPAによりサービス障害を招く可能性もあります。
本番ワークロードでBPAを導入する際には、事前に VPC Network Access Analyze や、VPCフローログなどを利用して、遮断影響を受ける通信が存在しない事を確認頂くことをおすすめします。